/*
 * Copyright (c) 2025 CAX Conversion Project
 */
package com.comac.ins.isfd.service;

import com.comac.ins.common.mybatis.core.page.PageQuery;
import com.comac.ins.common.mybatis.core.page.TableDataInfo;
import com.comac.ins.isfd.domain.bo.IsfdDatasourceTaskSchedulingConfigActionBo;
import com.comac.ins.isfd.domain.bo.IsfdDatasourceTaskSchedulingConfigBo;
import com.comac.ins.isfd.domain.vo.IsfdDatasourceDataIntegrationTaskVo;
import com.comac.ins.isfd.domain.vo.IsfdDatasourceTaskSchedulingConfigVo;

import java.util.Date;
import java.util.List;

/**
 * 数据源数据集成任务调度配置Service接口
 *
 * @author Lion Li
 * @date 2024-10-11
 */
public interface IIsfdDatasourceTaskSchedulingConfigService {

    /**
     * 查询数据源数据集成任务调度配置
     *
     * @param id 主键
     * @return 数据源数据集成任务调度配置
     */
    IsfdDatasourceTaskSchedulingConfigVo queryById(Long id);

    /**
     * 分页查询数据源数据集成任务调度配置列表
     *
     * @param bo        查询条件
     * @param pageQuery 分页参数
     * @return 数据源数据集成任务调度配置分页列表
     */
    TableDataInfo<IsfdDatasourceTaskSchedulingConfigVo> queryPageList(IsfdDatasourceTaskSchedulingConfigBo bo, PageQuery pageQuery);

    /**
     * 查询符合条件的数据源数据集成任务调度配置列表
     *
     * @param bo 查询条件
     * @return 数据源数据集成任务调度配置列表
     */
    List<IsfdDatasourceTaskSchedulingConfigVo> queryList(IsfdDatasourceTaskSchedulingConfigBo bo);

    /**
     * 新增或修改调度配置
     */
    IsfdDatasourceTaskSchedulingConfigVo save(IsfdDatasourceTaskSchedulingConfigBo bo);

    /**
     * 定时任务扫描当前时间以前的数据
     */
    List<IsfdDatasourceTaskSchedulingConfigVo> scanBeforeNowTimeList(Date nowTime);

    /**
     * 设置调度时间
     */
    Date findTriggerTime(Date nowTime, Long taskSchedulingConfigId);

    /**
     * 离线任务中止接口
     */
    Boolean suspend(IsfdDatasourceTaskSchedulingConfigActionBo actionBo);

    /**
     * 离线任务外部触发接口
     */
    Boolean trigger(IsfdDatasourceTaskSchedulingConfigActionBo actionBo);

    /**
     * 执行seatunnel工具，开始集成数据
     */
    void useSeaTunnelTool(IsfdDatasourceDataIntegrationTaskVo taskVo, Date nowTime);
}
